草庐IT

c++ - Swig -includeall 除了...

全部标签

java - 使用JNI访问C中Java对象中的Java对象

我是JNI的新手,已经掌握了使用JNI处理Java对象中的整数和数组的基础知识。现在我正在尝试修改/访问Java对象中的Java对象。我一直在互联网和StackOverflow上搜索,但还没有找到如何执行此操作。这是例子。在Java中:publicclassObjectOne{privatebyte[]buff;......}publicclassObjectTwo{privateObjectOneobj;......}在JNI中,如何通过ObjectTwo从ObjectOne访问“buff”?我试过这样的东西......JNIEXPORTvoidJNICALLJava_accessB

c++ - 包含位字段的结构的大小

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whyisn'tsizeofforastructequaltothesumofsizeofofeachmember?我试图理解位域的概念。但是我无法找到为什么CASEIII中以下结构的大小显示为8个字节。案例一:structB{unsignedcharc;//+8bits}b;大小(b);//输出:1(因为unsignedchar在我的系统上占用1个字节)案例二:structB{unsignedb:1;}b;sizeof(b);//Output:4(becauseunsignedtakes4bytesonmy

c++ - 在 C 和 C++ 中没有定义的函数 main

为什么这段代码在C中编译成功,而在C++中却报错?intmain;它在托管环境中是否符合标准?你能引用标准吗?我已经用gcc测试过了。 最佳答案 WhythiscodecompilesuccessfulinCandwillgiveyouanerrorinC++?由于C++名称修改。基本上,在所有实际实现中,链接器寻找名为main的symbol(或其变体,我在Apple平台上看到过_main)-在C中,它可以是main()函数或名为的外部存储变量main-关键是通常C实现(编译器、工具链)在链接器级别不区分变量和函数,这就是为什么提供

c++ - 带回调的 ObjC/C/C++ 高分辨率计时器

我确定之前有人问过这个问题,所以我当然使用搜索功能来检查是否有解决我问题的答案。然而,我所能找到的只是关于高精度测量时间的大量答案。我需要的是一个高分辨率(至少毫秒)的计时器,它允许我在定义的时间段过去时触发回调。我想在CocoaMacOSX应用程序中使用它,因此C/C++或Obj-C是可能的。如果需要额外的库,那么这也很好。我找到了这个http://www.songho.ca/misc/timer/timer.html但它使用的是繁忙的等待策略,我认为会消耗太多性能。非常感谢您的帮助! 最佳答案 您可以直接使用Apple的GCD。

c++ - 我应该如何为 c 字符串 char 数组分配内存?

因此,在尝试学习如何在C++中使用C字符串时,我遇到了内存分配问题。这里的想法是创建一个格式为(s1+sep+s2)的新字符串我使用的文本提供了标题,所以我无法更改它,但我在尝试设置charstr[]的大小时遇到​​了问题。我收到一条错误消息,指出sLength不是常量,因此不能用于设置数组的大小。我对C++比较陌生,所以这是一个由两部分组成的问题。这个策略实际上是在为新数组分配内存吗?如果无法使用strlen(char*)获取常量值,如何正确设置数组大小?char*concatStrings(char*s1,char*s2,charsep){intsLength=strlen(s1)

c++ - 并行 I/O SSD 与 HDD 的惊人结果

我的一些关于并行I/O的测试发生了一个非常奇怪的情况。情况是这样的。我有多个线程打开同一个文件的文件处理程序,并从文件的多个位置(均匀间隔)读取有限数量的字节并将其转储到数组中。一切都是通过boost线程完成的。现在,我假设硬盘驱动器由于随机访问搜索而应该更慢。这就是为什么我的测试实际上是针对SSD的。事实证明,与HDD相比,从固态硬盘读取同一文件时,我几乎没有得到任何加速。想知道问题可能是什么?这对我来说是不是很令人惊讶/我也在下面发布我的代码以查看我到底在做什么:voidreadFunctor(std::stringpathToFile,size_tfilePos,BYTE*buf

c++ - 在不使用 extern "C"的情况下从 C 调用 C++ 函数

是否可以从C代码调用C++DLL中的函数?该函数未声明extern"C"。仅适用于VisualStudio的丑陋的平台相关hack很好。调用约定不应该是一个主要问题,但我该如何处理名称修改。?例如,在VisualStudio中,带有签名voidf()的C++函数的名称被破坏了?f@@YAXXZ,这不是合法的C标识符。(您不需要告诉我应该将C++函数声明为extern"C"。我已经知道了。但我处于无法更改C++代码的情况。) 最佳答案 将违规函数包装在另一个C++函数中,并使用extern"C"声明它。无需为其创建特殊的DLL,只需在

c++ - 如何将 2 位从一个 int 复制到另一个?

我有两个无符号整型数:a和b(b是一个无符号整型指针)。我想将a的第8位和第9位复制到b的第2位和第3位(所有索引都基于0)。我是这样做的:boolsecondBit=(a&(1提醒:b是一个无符号整型指针。有更好的方法吗? 最佳答案 清除*b的相关位,并将它们设置为你想要从a中得到的位:*b=(*b&~0xC)|((a&0x300)>>6);//Thisisthe'not'of00001100,inotherwords,11110011~0xC;//Thiszerosthebitsof*bthatyoudonotwant(bbei

c++ - QScopedPointer、boost::scoped_ptr - 为什么提示类型不完整?

我有一个c-Structure,我想将它嵌入到一个cpp类中而不破坏我的全局命名空间,所以我不想包含c-header。这就是为什么我想使用具有前向声明结构名称的智能作用域指针(QScopedPointer或boost::scoped_ptr)。我不明白的是上述两个在编译时失败的作用域指针的实现:boost:errorC2027:useofundefinedtype'xxx'templateinlinevoidchecked_delete(T*x){//intentionallycomplex-simplificationcausesregressionstypedefchartype_

c++ - 为什么 memcpy/memmove 在将 int 复制到字节缓冲区时反转数据?

所以,我的问题很简单:我需要用一些信息填充一个char/unsignedchar数组。中间的一些值取自short/int类型,这就是发生的情况:代码:intfoo=15;//0x0000000Funsignedcharbuffer[100]={0};..memcpy(&buffer[offset],&foo,sizeof(int));//eithermemmove...输出:...0F000000..所以现在我写了一个函数来反转这些字段,但我认为这不是一个明智的解决方案,因为它会影响执行时间、资源和开发时间。有更简单的方法吗?编辑:正如你们中的许多人所指出的,这种行为是由小端处理器产生